package cn.com.xy.sms.sdk.action;

import java.util.Date;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONObject;

public class XyIpcAidlAction {

    /**
     * supportAidlAction 是否支持AIDL方式调用，默认不支持. func:1
     * 
     * @return
     */
    public boolean supportAidlAction() {
        return false;
    }

    /**
     * parseMsgToBaseMap 基础识别 func:2
     * 
     * @return
     */
    public Map<String, Object> parseMsgToBaseMap(String sender, String content, Map<String, String> map) {
        return null;
    }

    /**
     * handerBubbleValueMap 处理识别的丰富气泡数据 func:3
     * 
     * @return
     */
    public Map<String, Object> handerBubbleValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * catchUrls 识别短信中的url. func:4
     * 
     * @return
     */
    public String catchUrls(String msg, String unionBy) {
        return null;
    }

    /**
     * parseSensitive 识别短信原文中是否有敏感字段. func:5
     * 
     * @return
     */
    public int parseSensitive(String message) {
        return 0;
    }

    /**
     * parseRecogniseValue 特征值识别. func:6
     * 
     * @return
     */
    public String parseRecogniseValue(String phoneNum, String msg, long msgTime, Map<String, Object> extend) {
        return null;
    }

    /**
     * getRecogniseActionConfig 获取特征值点击动作配置. func:7
     * 
     * @return
     */
    public String getRecogniseActionConfig(JSONObject obj, Map<String, String> extend) {
        return null;
    }

    /**
     * parseVerifyCodeToMap 兜底验证码优先识别. func:8
     * 
     * @return
     */
    public Map<String, Object> parseVerifyCodeToMap(String sender, String content, Map<String, String> extend) {
        return null;
    }

    /**
     * handleParseMsg 保存支持的识别结果到会话缓存数据库. func:9
     * 
     * @return
     */
    public void handleParseMsg(String msgId, String phoneNumber, String smsCenterNum, String smsContent, long smsTime,
            Map<String, String> extend, Map<String, Object> result) {
    }

    /**
     * getSmsTypeByMap 根据识别结果map，获取短信类型. func:10
     * 
     * @return
     */
    public int getSmsTypeByMap(Map<String, Object> resultMap, int juagetype) {
        return 0;
    }

    /**
     * getSmsType 获取短信类型,三星分类接口 func:11
     * 
     * @return
     */
    public JSONObject getSmsType(Map<String, Object> orgValueMap) {
        return null;
    }

    /**
     * handerNotificationValueMap func:12
     * 
     * @return
     */
    public Map<String, Object> handerNotificationValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerDateValueMap func:13
     * 
     * @return
     */
    public Map<String, Object> handerDateValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerRemindValueMap func:14
     * 
     * @return
     */
    public Map<String, Object> handerRemindValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerRemindValueMap func:15
     * 
     * @return
     */
    public Map<String, Object> handerPayValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerValueMap func:16
     * 
     * @return
     */
    public Map<String, Object> handerValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerValueMap func:17
     * 
     * @return
     */
    public Map<String, Object> handerValueMap(Map<String, Object> valueMap, String titleNo) {
        return null;
    }

    /**
     * isOperatorsPhoneType func:18
     * 
     * @return
     */
    public boolean isOperatorsPhoneType(String phone) {
        return false;
    }

    /**
     * getBubbleViewVersion func:19
     * 
     * @return
     */
    public String getBubbleViewVersion(Map<String, Object> extend) {
        return null;
    }

    /**
     * isAppChannel func:20
     * 
     * @return
     */
    public boolean isAppChannel(String appKey) {
        return false;
    }

    /**
     * isEnterpriseSms func:21
     * 
     * @return
     */
    public boolean isEnterpriseSms(String phoneNumber, String smsContent, Map<String, String> extend) {
        return false;
    }

    /**
     * getActionCode func:22
     * 
     * @return
     */
    public int getActionCode(String action) {
        return -1;
    }

    /**
     * parseMsgToNewContacts func:23
     * 
     * @return
     */
    public String[] parseMsgToNewContacts(String phonenum, String msg, String oldContact, String[] contactNames) {
        return null;
    }

    /**
     * isServiceChoose func:24
     * 
     * @return
     */
    public int isServiceChoose(String channel, String type) {
        return -1;
    }

    /**
     * getSceneVersion func:25
     * 
     * @return
     */
    public String getSceneVersion() {
        return null;
    }

    /**
     * handerValueMapByType func:26
     * 
     * @return
     */
    public Map<String, Object> handerValueMapByType(int type, Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerWatchValueMap func:27
     * 
     * @return
     */
    public String handerWatchValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerContactValueMap func:28
     * 
     * @return
     */
    public JSONObject handerContactValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * handerBoxValueMap func:29
     * 
     * @return
     */
    public String handerBoxValueMap(Map<String, Object> valueMap) {
        return null;
    }

    /**
     * getCmd func:30
     * 
     * @return
     */
    public String getCmd(String phoneNum, String msg) {
        return null;
    }

    /**
     * parseMsgForCardArray func:31
     * 
     * @return
     */
    public String parseMsgForCardArray(JSONObject jsobj, Map<String, String> extend) {
        return null;
    }

    /**
     * multiReplace func:32
     * 
     * @return
     */
    public String multiReplace(String msg) {
        return null;
    }

    /**
     * parseShard func:33
     * 
     * @return
     */
    public String[] parseShard(String msg, String msgIdx, String msgMd) {
        return null;
    }

    /**
     * parseEmail func:34
     * 
     * @return
     */
    public String parseEmail(String fromUser, String content, Map<String, String> extend){
        return null;
    }

    public boolean getOnOffByType(final int type) {
        return false;
    }

    public JSONArray getConfigByType(int type, String uiVersion, Integer menuId) {
        return null;
    }

    public String getOnLineConfigureData(int type) {
        return null;
    }

    public long getUpdateCycle(int type, long defaultValue) {
        return 0L;
    }

    public void saveLogIn(final String uuid, final String className, final String methodName, final Object... args) {       
    }

    public void saveLogOut(final String uuid, final String className, final String methodName, final Object... args) {
    }

    public void saveLogException(final String className, final String methodName, Throwable t) {
    }

    public void insertLog(final String table, final String sql, final JSONObject value) {

    }

    public void deleteLog(final String table, final String sql, final JSONObject whereArgs) {

    }

    public JSONArray queryLog(final String table, final String sql, final String[] columns, final JSONObject whereArgs,
            final String orderBy, final String limit) {
        return null;
    }

    public String queryLogByType(int type, final String channel, final String appVersion) {
        return null;
    }

    public void postLogCallback(int type, final String data) {

    }

    public String getCorp(final String msg) {

        return null;
    }

    public String[] getCorpAndEc(final String msg) {
        return null;
    }

    // DateTimeNormalizer

    public Date convertDate(final String dateString) {
        return null;
    }

    public Date convertDate(final String dateString, Date baseDate) {
        return null;
    }
    
    public long convertDateLong(String dateString, Date timeBase, boolean autoFill, boolean ignoreIfNoDate, boolean maxThanBaseTime) {
        return 0L;
    }
    
    public boolean parseUtilMainJarIsReady(){
        return false;
    }
    
    public boolean isInitData(){
        return false;
    }
    
    public void updateSysParamEntity(String key, String value){
        
    }
    
    public boolean isEnterpriseEmail(String fromUser, Map<String, Object> extend) {
        return false;
    }
    
    public Map<String, Object> parseVerCode(String fromUser, String content, String subject, Map<String, String> extend){
        return null;
    }
    
    public boolean isVCEmail(String subject, String summary, String fromUser, String xmailer,
            Map<String, String> extend){
        return false;
    }
    
    public boolean isVCEmail(String subject) {
        return false;
    }
    
    public boolean isUnSubMsg(String smsBody){
        return false;
    }

    /* SMARTISAN-565 huangzhiqiang 20170413 start */
    /**
     * 识别短信是否是工资类短信，如果是则返回JSON数据字符串，里面包含有工资类短信的金额下标；
     * 
     * @param msg 短信原文
     * @return  非工资短信返回："{\"salaryScene\": false }"
     *          是工资短信返回："{\"indexs\": [ {\"startIndex\":40, \"endIndex\":47 },{\"startIndex\":53, \"endIndex\":60 }], \"salaryScene\": true }"
     */
    public String parseSalary(String msg) {
        return null;
    }
    /* SMARTISAN-565 huangzhiqiang 20170413 end */

    /* SDK-766 huangzhiqiang 20170419 start */
    /**
     * 识别短信内容是否存在退订信息，如果存在则返回JSONArray数据字符串，数据包含退订指令或退订号码(instruct)、动作类型(actionType 1:短信回复类的退订、2:电话类的退订)、退订内容下标(startIndex,endIndex)
     * 
     * @param msg
     * @return
     *         不存在退订信息返回："[]"
     *         存在退订信息返回："[{\"instruct\":\"95582\",\"actionType\":2,\"startIndex\":0,\"endIndex\":9},{\"instruct\":\"N\",\"actionType\":1,\"startIndex\":74,\"endIndex\":79} ]"
     */
    public String parseUnsubscribe(String msg) {
        return null;
    }
    /* SDK-766 huangzhiqiang 20170419 end */

    /* KINGMAIL-85 huangzhiqiang 20170424 start */
    /**
     * 根据邮箱地址获取对应情景id
     * 
     * @param address 邮箱地址
     * @param extend 扩展参数，可以为null
     * @return
     */
    public String[] getAllowScenes(String address, Map<String, Object> extend) {
        return null;
    }
    /* KINGMAIL-85 huangzhiqiang 20170424 end */
}
